A heterogeneous computer system is a computer system with different types of processor such as, for example, a central processor unit (CPU) and a graphical processor unit (GPU). The GPU may soon include thousands of processing elements while the CPU often has only several cores. Additionally, the GPU may have a separate memory from the CPU. Because GPUs are becoming a larger part of the total amount of silicon that is part of heterogeneous computer systems relative to the CPU, it has become more important to keep the GPU active to efficiently use the entire heterogeneous computer system.
Often, work flows between the CPU and to the GPU. The CPU may wait for the work to be done by the GPU, or the GPU may wait for work to be done by the CPU.
Therefore, there is a need in the art for systems and methods that provide improved control flow in a heterogeneous computer system.